﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Poligas_ERP.Classes;
using ModeloDesenvolvimento;

/*ESCRITO DIA 02/01/2012*/
namespace Poligas_ERP.Forms
{
    public partial class FrmProdutos : Form
    {
        DataTable dtProduto = new DataTable();
        DataTable dtRetorno = new DataTable();
        DataTable dtGrupo = new DataTable();
        DataTable dtSituacao = new DataTable();
        DataTable dtUnidades = new DataTable();

        int idProduto = 0;

        Produto produto = new Produto();
        Util util = new Util();

        public FrmProdutos()
        {
            InitializeComponent();
        }

        private void FrmProdutos_Load(object sender, EventArgs e)
        {
            dgvProdutos.AutoGenerateColumns = false;
            HabilitarControlesIniciais(true);
            LimparCampos();
            LocalizarDados();
            txtPesquisar.Focus();
            CarregarGrupo();
            CarregarSituacao();
            CarregaUnidade();
        }
        private void FrmProdutos_KeyDown(object sender, KeyEventArgs e)
        {
            if(e.KeyCode == Keys.Return)
            {
                SendKeys.Send("{TAB}");
            }
        }
        private void FrmProdutos_KeyPress(object sender, KeyPressEventArgs e)
        {
            if(e.KeyChar == (char)13)
            {
                e.Handled = true;
            }
        }
        private void dgvProdutos_RowEnter(object sender, DataGridViewCellEventArgs e)
        {
            RecuperarDadosPorCodigo();
        }
        private void txtPesquisar_TextChanged(object sender, EventArgs e)
        {
            LocalizarDados();
        }

        private void CarregarGrupo()
        {
            dtGrupo = produto.CarregaGrupo();

            if(dtGrupo.Rows.Count > 0)
            {
                cmbGrupo.DataSource = dtGrupo;
                cmbGrupo.DisplayMember = "Descricao";
                cmbGrupo.ValueMember = "CodGrupo";
            }
        }
        private void CarregaUnidade()
        {
            dtUnidades = produto.CarregaUnidade();

            if(dtUnidades.Rows.Count > 0)
            {
                cmbUnidade.DataSource = dtUnidades;
                cmbUnidade.DisplayMember = "Sigla";
                cmbUnidade.ValueMember = "CodUnidades";
            }
        }
        private void CarregarSituacao()
        {
            dtSituacao = produto.CarregaSituacao();

            if(dtSituacao.Rows.Count > 0)
            {
                cmbSituacao.DataSource = dtSituacao;
                cmbSituacao.DisplayMember = "Descricao";
                cmbSituacao.ValueMember = "CodSituacao";
            }
        }

        private void RecuperarDadosPorCodigo()
        {
            if(dgvProdutos.CurrentRow != null)
            {
                Int32 CodProduto = Convert.ToInt32(dgvProdutos.SelectedRows[0].Cells[0].Value);

                dtRetorno = produto.RecuperarDadosPorCodigo(CodProduto);

                if(dtRetorno.Rows.Count > 0)
                {
                    idProduto = Convert.ToInt32(dtRetorno.Rows[0]["CodProduto"]);
                    txtCodigo.Text = Convert.ToString(idProduto);
                    txtDescricao.Text = dtRetorno.Rows[0]["Descricao"].ToString();
                    cmbSituacao.SelectedItem = dtRetorno.Rows[0]["CodSituacao"].ToString();
                    cmbUnidade.SelectedItem = dtRetorno.Rows[0]["CodUnidade"].ToString();
                    txtQtd.Text = string.Format("{0:N0}", dtRetorno.Rows[0]["QtdEstoque"].ToString());
                    txtEstMinimo.Text = Convert.ToString(dtRetorno.Rows[0]["QtdMinimo"]);
                    txtEstMaximo.Text = Convert.ToString(dtRetorno.Rows[0]["QtdMax"]);
                    cmbGrupo.SelectedItem = dtRetorno.Rows[0]["CodGrupo"].ToString();
                    txtVlCompra.Text = string.Format("{0:N0}", dtRetorno.Rows[0]["VlTabela"].ToString());
                    txtVlVenda.Text = string.Format("{0:N0}", dtRetorno.Rows[0]["VlVenda"].ToString());
                }
            }
            dtProduto = null;
        }
        private void LocalizarDados()
        {
            dgvProdutos.DataSource = produto.LocalizarDados(txtPesquisar.Text);

            btnEditar.Enabled = (dgvProdutos.Rows.Count > 0);
            btnExcluir.Enabled = btnEditar.Enabled;

            RecuperarDadosPorCodigo();
        }
        private void LimparCampos()
        {
            txtPesquisar.Clear();
            txtCodigo.Clear();
            txtDescricao.Clear();
            cmbSituacao.SelectedIndex = -1;
            cmbGrupo.SelectedIndex = -1;
            cmbUnidade.SelectedIndex = -1;
            txtQtd.Clear();
            txtEstMinimo.Clear();
            txtEstMaximo.Clear();
            txtVlCompra.Clear();
            txtVlVenda.Clear();
        }
        private void HabilitarControlesIniciais(bool status)
        {
            gbxGrid.Enabled = status;
            gbxDados.Enabled = !status;
            HabilitarBotoes(status);

        }
        private void HabilitarBotoes(bool status)
        {
            btnNovo.Enabled = status;
            btnEditar.Enabled = status;
            btnExcluir.Enabled = status;
            btnGravar.Enabled = !status;
            btnCancelar.Enabled = !status;
        }

        private void btnNovo_Click(object sender, EventArgs e)
        {
            LimparCampos();
            HabilitarControlesIniciais(false);
            txtDescricao.Focus();
        }
        private void btnEditar_Click(object sender, EventArgs e)
        {
            HabilitarControlesIniciais(false);
            txtDescricao.Focus();
        }
        private void btnGravar_Click(object sender, EventArgs e)
        {
            if(string.IsNullOrEmpty(txtCodigo.Text.Trim()))
            {
                if(produto.Inserir(Convert.ToInt32(cmbSituacao.SelectedValue),  txtDescricao.Text, Convert.ToInt32(cmbUnidade.SelectedValue),
                    Convert.ToDecimal(txtQtd.Text), Convert.ToInt32(txtEstMinimo.Text), Convert.ToInt32(txtEstMaximo.Text), Convert.ToInt32(cmbGrupo.SelectedValue),
                    Convert.ToDecimal(txtVlCompra.Text), Convert.ToDecimal(txtVlVenda.Text)) == false)
                {
                    util.Aviso("Produto Inserido com Sucesso");
                }
                else
                {
                    util.Aviso("Erro ao Incluir Produto");
                }
            }
            else
            {

                Int32 CodProduto = Convert.ToInt32(dgvProdutos.SelectedRows[0].Cells[0].Value);
                if(produto.Alterar(CodProduto, Convert.ToInt32(cmbSituacao.SelectedValue), txtDescricao.Text, Convert.ToInt32(cmbUnidade.SelectedValue),
                    Convert.ToDecimal(txtQtd.Text), Convert.ToInt32(txtEstMinimo.Text), Convert.ToInt32(txtEstMaximo.Text), Convert.ToInt32(cmbGrupo.SelectedValue),
                    Convert.ToDecimal(txtVlCompra.Text), Convert.ToDecimal(txtVlVenda.Text)) == false)
                {
                     
                    util.Aviso("Registro Alterado com Sucesso");
                }
                else
                {
                    util.Aviso("Erro ao Atualizar Registro");
                }
                
            }
            HabilitarControlesIniciais(true);
            LimparCampos();
            LocalizarDados();
        }
        private void btnExcluir_Click(object sender, EventArgs e)
        {
            idProduto = Convert.ToInt32(dgvProdutos.SelectedRows[0].Cells[0].Value);

            string pergunta = "Deseja Excluir o Registro?";

            if(idProduto <= 0)
            {
                util.Aviso("Selecione um arquivo para Exclusão");
                return;
            }
            if(util.Decide(pergunta, true))
            {
                Int32 CodProduto = idProduto; //Convert.ToInt32(dgvProdutos.SelectedRows[0].Cells[0].Value);

                if(produto.Excluir(CodProduto))
                {
                    util.Aviso("Arquivo Excluido com Sucesso");
                }
                else
                {
                    util.Aviso("Erro ao Excluir");
                }
            }
            LimparCampos();
            LocalizarDados();

        }
        private void btnCancelar_Click(object sender, EventArgs e)
        {
            LimparCampos();
            HabilitarControlesIniciais(true);
            LocalizarDados();
        }


    }
}
